#encoding:utf-8

import unittest
from hero import *
from god import *

class TestGod(unittest.TestCase):
    
    def test_Map(self):
        '''
        0p000
        00e00
        00000
        '''
        player1 = Hero(name="狄洛",vitality=20,power=20,strength=20,intellect=10,speed=10)
        enemy1 = Enemy(1,150,150,40,25,40,name='哥布林')
        width,height = 5,3
        gMap = []
        for i in range(height):
            gMap.append([0]*width)         #上帝世界的size
        self.assertEqual(len(gMap), 3)
        self.assertEqual(len(gMap[0]), 5)
        world = God(gMap)                   #创造上帝的世界
        world[0,1] = player1
        world[1,2] = enemy1
        
        world.missionStart()              
        self.assertEqual(world.round, 1)                #测试第一回合开始
        gbl = world.nextObj()     
        self.assertEqual(gbl,gbl)                       #测试第一个活动的是不是gbl
        self.assertEqual(gbl.counterattack(player1),0)  #测试能否攻击到
        self.assertFalse(gbl.fly(2,6))                  #移动超过地图边界
        self.assertFalse(gbl.fly(6,2))                  #移动超过地图边界  
        self.assertFalse(gbl.fly(0,1))                  #移动到已有obj的地方
        self.assertEqual(world[1,2],gbl)                #不能移动后gbl的地点不变
        self.assertTrue(gbl.fly(0,2))                   #移动到空地
        self.assertEqual(world[1,2],0)                  #移动后原来的地方变0
        self.assertEqual(world[0,2],gbl)                #移动后的坐标上是gbl
        self.assertEqual(gbl.counterattack(player1),1)  #测试gbl移动后能否攻击到(攻击到)
        gbl.disable()
        
        dl = world.nextObj()
        self.assertTrue(dl.fly(1,2))                    #移动到空地
        self.assertEqual(dl.counterattack(gbl),0)       #测试能否攻击到(攻击到)
        dl.disable()
        self.assertEqual(world.missionEnd(),1)           #游戏胜利
        





if __name__ == '__main__':
    unittest.main()